#include <iostream>
#include <random>
#include <sstream>
#include <iomanip>
#include <atomic>

std::string Mkuuid()
    {
        //产生一个随机数类，调用()方法生成随机数，但是一个机器随机数，效率低
    std::random_device rd;
    //把rd()作为种子，通过梅森旋转算法，生成一个伪随机数
    std::mt19937_64 gernator(rd());
    //生成0-255的数字
    std::uniform_int_distribution<int> distribution(0,255);
    //将生成的数字转换为16进制数字字符，写进stringstream
    std::stringstream ss;
    for(int i=0;i<8;++i)
    {
        ss<<std::setw(2)<<std::setfill('0')<<std::hex<<distribution(gernator);
        if(i==3||i==5||i==7)
            ss<<"-";
    }
    //std::cout<<ss.str()<<std::endl;

    static std::atomic<size_t> seq(1);
    size_t num=seq.fetch_add(1);
    for(int i=7;i>=0;--i)
    {
        //std::cout<<std::hex<<num<<std::endl;
        ss<<std::setw(2)<<std::setfill('0')<<std::hex<<((num>>(i*8))&0xff);
        if(i==6)
            ss<<'-';
        //std::cout<<ss.str()<<std::endl;
    }
    std::cout<<ss.str()<<std::endl;
        return ss.str();
    }

int main()
{
    for(int i=0;i<100;++i)
        std::cout<<Mkuuid()<<std::endl;

    return 0;
}